package com.demo.java.OD51_100.OD53;

import java.util.HashMap;
import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【斗地主】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/
 */
public class OdMain {

    // 定义扑克牌的顺序
    static String[] mGraph = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};

    public static void main(String[] args) {
        try {
            Scanner sc = new Scanner(System.in);
            String myValue = sc.nextLine();  // 读取拥有的牌
            String overValue = sc.nextLine();  // 读取已经出过的牌
            HashMap<String, Integer> cardsHashmap = new HashMap<>();

            // 初始化每张牌的数量
            for (String s : mGraph) {
                cardsHashmap.put(s, 4);  // 每张牌有4张
            }

            // 更新拥有的牌和出过的牌数量
            valueDiff(cardsHashmap, myValue);
            valueDiff(cardsHashmap, overValue);

            // 查找并输出最长连牌
            String res = find(cardsHashmap);
            System.out.println(res);  // 输出结果
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("input error");
        }
    }

    // 更新哈希表中牌的数量
    public static void valueDiff(HashMap<String, Integer> cardsMap, String s) {
        for (String card : s.split("-")) {
            if (cardsMap.containsKey(card)) {
                cardsMap.put(card, cardsMap.get(card) - 1);
            }
        }
    }

    // 查找最长的连续牌链
    private static String find(HashMap<String, Integer> cardsMap) {
        String result = "NO-CHAIN";
        int l = 0, r = 0;  // 连牌的左右边界

        // 遍历扑克牌顺序，查找连牌
        for (int i = 0; i < mGraph.length; ++i) {
            String card = mGraph[i];
            if (cardsMap.get(card) > 0) {
                l = i;
                while (i < mGraph.length - 1 && cardsMap.get(mGraph[i + 1]) > 0) {
                    ++i;
                }
                r = i + 1;
            }
        }

        // 如果连牌长度 >= 5，更新结果
        if (r - l >= 5) {
            StringBuilder sb = new StringBuilder();
            for (int i = l; i < r; ++i) {
                sb.append(mGraph[i]).append("-");  // 拼接连牌
            }

            if (sb.length() > 0) {
                result = sb.substring(0, sb.length() - 1);  // 去掉最后的“-”
            }
        }
        return result;
    }
}